From 0fd33b3d8c2bb4a3221046260b5f983ad9838efb Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 May 2008 10:09:10 +0000 Subject: [PATCH] (Ffile_attributes): Don't allow the device number become negative. --- src/dired.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dired.c b/src/dired.c index 31b7e19ddae..7936e04a54e 100644 --- a/src/dired.c +++ b/src/dired.c @@ -1048,8 +1048,11 @@ Elements of the attribute list are: /* But keep the most common cases as integers. */ values[10] = make_number (ino); - /* Likewise for device. */ - if (FIXNUM_OVERFLOW_P (s.st_dev)) + /* Likewise for device, but don't let it become negative. We used + to use FIXNUM_OVERFLOW_P here, but that won't catch large + positive numbers such as 0xFFEEDDCC. */ + if ((EMACS_INT)s.st_dev < 0 + || (EMACS_INT)s.st_dev > MOST_POSITIVE_FIXNUM) values[11] = Fcons (make_number (s.st_dev >> 16), make_number (s.st_dev & 0xffff)); else -- 2.30.2